//ys_AQM1602.ino //pico/picoW用 //キャラクタ液晶 秋月電子AQM1602の表示ライブラリ //I2Cポート:I2C0 及びI2C1 /////////////////////////////////////////////// // 液晶表示器制御ライブラリ for pico/picoW by Arduino // pico/picoWのI2C0モジュール使用の場合に於ける内蔵関数は以下 // lcd_init0() ----- 初期化 // lcd_cmd0(cmd) ----- コマンド出力 // lcd_data0(chr) ----- 1文字表示出力 // lcd_clear0() ----- 全消去 // lcd_str0(str*) ----- 文字列表示 // // pico/picoWのI2C1モジュール使用の場合に於ける内蔵関数は以下 // lcd_init1() ----- 初期化 // lcd_cmd1(cmd) ----- コマンド出力 // lcd_data1(chr) ----- 1文字表示出力 // lcd_clear1() ----- 全消去 // lcd_str1(str*) ----- 文字列表示 ////////////////////////////////////////////// #define LCD_ADRS 0x3E //接続するキャラクタ液晶のI2Cアドレス /////// コマンド出力関数 // コマンド書き込み void lcd_cmd0(volatile char cmd) { Wire.beginTransmission (LCD_ADRS); Wire.write(0x00); Wire.write(cmd); Wire.endTransmission(); delay(10); } void lcd_cmd1(volatile char cmd) { Wire1.beginTransmission (LCD_ADRS); Wire1.write(0x00); Wire1.write(cmd); Wire1.endTransmission(); delay(10); } //////// 1文字表示関数 //データ書き込み void lcd_data0(volatile char data) { Wire.beginTransmission (LCD_ADRS); Wire.write(0x40); Wire.write(data); Wire.endTransmission(); delay(1); } void lcd_data1(volatile char data) { Wire1.beginTransmission (LCD_ADRS); Wire1.write(0x40); Wire1.write(data); Wire1.endTransmission(); delay(1); } /////// 文字列出力関数 void lcd_str0(char* str) { while(*str) //文字列終端の '\0'を検出するまで { lcd_data0(*str); // 1文字表示 str++; //ポインタをインクリメント } } void lcd_str1(char* str) { while(*str) //文字列終端の '\0'を検出するまで { lcd_data1(*str); // 1文字表示 str++; //ポインタをインクリメント } } //液晶初期化 //I2C0 void lcd_init0(){ delay(100); lcd_cmd0(0x38); delay(20); lcd_cmd0(0x39); delay(20); lcd_cmd0(0x14); delay(20); lcd_cmd0(0x73); delay(20); lcd_cmd0(0x52); delay(20); lcd_cmd0(0x6C); delay(20); lcd_cmd0(0x38); delay(20); lcd_cmd0(0x01); delay(20); lcd_cmd0(0x0c); delay(20); } //I2C1 void lcd_init1(){ delay(100); lcd_cmd1(0x38); delay(20); lcd_cmd1(0x39); delay(20); lcd_cmd1(0x14); delay(20); lcd_cmd1(0x73); delay(20); lcd_cmd1(0x52); delay(20); lcd_cmd1(0x6C); delay(20); lcd_cmd1(0x38); delay(20); lcd_cmd1(0x01); delay(20); lcd_cmd1(0x0c); delay(20); } /////// 全消去関数 void lcd_clear0(void) { lcd_cmd0(0x01); // 初期化コマンド出力 } void lcd_clear1(void) { lcd_cmd1(0x01); // 初期化コマンド出力 }